/**
 * Created by Administrator on 2017/11/24 0024.
 */
//将url参数转换成hashmap对象
function paramToHashMap(param) {
    var tmpArr = param.split("&");
    var hashMap = new Object();
    for ( var i = 0; i < tmpArr.length; i++) {
        var para = tmpArr[i];
        if (para.indexOf("=") != -1) {
            var kv = para.split("=");
            hashMap[kv[0]] = kv[1];
        }
    }
    return hashMap;
}
var params = paramToHashMap(document.location.search.split("?")[1]);
var type = decodeURIComponent(params["type"]);


var WfPowerSk = null;//风电场功率实况表
var WfDq = null;//风电场短期预报数据
var WfNwp = null;//风电场天气预报数据（取风速）
var WfMetSk = null;//测风塔数据表（取风速）
var InstallCapa = null;//装机容量


$(function () {
    //dateTiemSelect();//初始化日期格式
    load();
    var table = new tableFactory();
    //setTimeout('real()',10000);
})
//日期转换
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

//初始化加载曲线跟表格数据
function load(){
    var index = layer.load(1);
    //七日电量预测
    var date = new Array();//日期（今日，明天，第三天日期.....）
    var power = new Array();//电量
    var farmName = new Array(); //电站名

    //var farmid = $("#selectFarm option:checked").val();
    // var farmid = $('#selectFarm', window.parent.document).val();//获取父页面的元素
    if(type == 'ALL'||type == 'GF'||type == 'FD'){
        var p = {
            "type":type
        };
        $.ajax({
            url : "../shortPeriodManage/sevenPortionStation",
            type : "get",
            contentType : "application/json",
            dataType : "json",
            data : p/*JSON.stringify(p)*/,//转换成字符串。后台使用了RequestBody注解
            success : function(data) {
                //七天电量预测时间
                $.each(data.sevendate, function (index, item) {
                    var time = new Date(parseInt(item)).Format("yyyy-MM-dd");
                    date.push(time);
                });
                date[0] = '今天';
                date[1] = '明天';

                power = data.sevenpower;
                farmName = data.farmName;

                lodaTu(date,power,farmName);
                layer.close(index);
            }/*,
        error :function(){
            alert("添加失败");
        }*/
        });
    }else {
        var p = {
            "farmName":type
        };
        var test = new Array();
        $.ajax({
            url : "../shortPeriodManage/sevenOneStation",
            type : "get",
            contentType : "application/json",
            dataType : "json",
            data : p/*JSON.stringify(p)*/,//转换成字符串。后台使用了RequestBody注解
            success : function(data) {
                //七天电量预测时间
                $.each(data.sevendate, function (index, item) {
                    var time = new Date(parseInt(item)).Format("yyyy-MM-dd");
                    date.push(time);
                });
                date[0] = '今天';
                date[1] = '明天';

                power = data.sevenpower;
                farmName.push(type);
                lodaTu(date,power,farmName);
                layer.close(index);
            }/*,
        error :function(){
            alert("添加失败");
        }*/
        });
    }




}

//表格工厂
function tableFactory() {
    var me = this;
    me.data = null;//有功功率
    me.windData = null;//电站信息
    var init = function () {
        //$.when(me.getWindData()).then(function () {
        $("#shortPeriod").bootstrapTable({
            method: 'get',				  //请求方式（*）
            striped: true,					  //是否显示行间隔色
            cache: false,					   //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,				   //是否显示分页（*）
            sortable: true,					 //是否启用排序
            sortOrder: "desc",				   //排序方式
            sidePagination: "client",		   //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,					   //初始化加载第一页，默认第一页
            search: true,					   //是否显示表格搜索，只能进行客户端搜索
            strictSearch: false,                //true为全匹配，false为模糊查询
            showColumns: true,				  //是否显示筛选列按钮
            showRefresh: true,			  //是否显示刷新按钮
            clickToSelect:true,				//是否启用点击选中行
            showToggle: false,					//是否显示详细视图和列表视图的切换按钮
            cardView: false,					//是否显示详细视图
            detailView: false,				   //是否显示父子表
            singleSelect: true,                //是否支持多选,false表示支持多选，true表示不支持
            //undefinedText: '_',              //当数据为undefined时显示的字符
            height: 'auto',
            pageSize: 20,
            pageList: [5,20,30],
            editable:true,//是否可以行内编辑
            showExport: true,//是否显示导出按钮
            exportDataType:'all',//导出全部
            exportTypes:[  'csv'], //导出文件类型
            export: 'glyphicon-export icon-share',
            columns: [{
                title: '时间',
                field: 'foretime',
                sortable: true,//排序
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                    return new Date(parseInt(value)).Format("yyyy-MM-dd hh:mm");
                }/*,
                    editable: {
                        type:'datetime',
                        clear: false,
                        placement: 'left',
                        mode: "popup",//编辑框的模式：支持popup和inline两种模式，默认是popup
                        title: '请选择日期:',
                        format: 'yyyy-mm-dd hh:ii',
                        //viewformat: 'yyyy-mm-dd hh:ii',
                        //pickerPosition: "bottom-left",
                        datetimepicker: {
                            language: 'zh-CN',
                            weekStart: 1
                            //format: 'yyyy-mm-dd hh:ii'
                        }
                    }*/
            },{
                title: '实际功率(mw)',
                field: '',
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                    return me.getSkPower(row.foretime);
                }/*,
                    editable: {
                        type: 'text',
                        mode: "popup",//编辑框的模式：支持popup和inline两种模式，默认是popup
                        title: '实际功率(mw)',
                        validate: function (v) {
                            var reg = /^[-+]?\d+$/;
                            if (!reg.test(v)) {
                                return '功率必须大于0';
                            }
                        }
                    }*/
            }, {
                title: '预报功率(mw)',
                field: 'power',
                align: 'center',
                sortable: true,//排序
                valign: 'middle',
                formatter: function (value, row, index) {
                    if(row.power_fix==null||row.power_fix==0||row.power_fix=="0"){
                        return value.toFixed(2);
                    }else {
                        return row.power_fix.toFixed(2);
                    }

                },
                editable: {
                    type: 'text',
                    mode: "inline",//编辑框的模式：支持popup和inline两种模式，默认是popup
                    title: '短期功率(mw)',
                    sortable: true,//排序
                    validate: function (v) {
                        var reg = /^[-+]?\d+$/;
                        if (!reg.test(v)) {
                            return '风速必须大于0';
                        }
                    }
                }
            }, /*{
                    title: '运行风机总数',
                    field: 'runCount',
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    editable: {
                        type: 'text',
                        mode: "popup",//编辑框的模式：支持popup和inline两种模式，默认是popup
                        title: '风机总数',
                        validate: function (v) {
                           var result= /^[0-9]*[1-9][0-9]*$/;//正整数
                            if(result.test(v)===false) return '必须为整数';
                        }
                    }
                },*/{
                title: '测风塔风速(m/s)',
                field: '',
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                    return me.getWfMetSkSpeed(row.foretime);
                }
            }, {
                title: '天气预报风速(m/s)',
                field: '',
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                    return me.getWfNwpSpeed(row.foretime);
                },
            },{
                title: '原始预报(mw)',
                field: '',
                align: 'center',
                valign: 'middle',
                formatter: function (value, row, index) {
                    return row.power.toFixed(2);
                },
            }],
            onEditableSave: function (field, row, oldValue, $el) {//编辑之后的事件
                var p ={
                    id:row.fid,
                    power:row.power
                }
                $.ajax({
                    type: "post",
                    url: "../shortPeriodManage/edit",
                    data:p,//后台使用了实体类，前台就不能用Json.stringify
                    dataType: 'JSON',
                    success: function (data, status) {

                    },
                    error: function () {
                        alert('编辑失败');
                    },
                    complete: function () {

                    }
                });
            }
        });
        //me.loadData();
        load();
        // });
    }
    init();
}
tableFactory.prototype = {

    getWindById: function (farmid) {
        var farmName = '';
        var me = this;
        $.each(me.WindData, function (index, item) {
            if (item.farmid === farmid) {
                farmName = item.farmname;
                return false;
            }
        });
        return farmName;
    },
    /*获取实况功率*/
    getSkPower:function (time) {
        var power="";
        if(WfPowerSk.length>0){
            $.each(WfPowerSk, function (index, item) {
                if(item.observeTime.substring(0,16)==new Date(parseInt(time)).Format("yyyy-MM-dd hh:mm")) {
                    power = item.activePower.toFixed(2);
                    return false;
                }
            });
            return power;
        }
    },
    /*获取测风塔风速*/
    getWfMetSkSpeed:function (time) {
        var speed="";
        if(WfMetSk.length>0){
            $.each(WfMetSk, function (index, item) {
                var WfMetSkTime = new Date(parseInt(item.observetime)).Format("yyyy-MM-dd hh:mm")
                if(WfMetSkTime==new Date(parseInt(time)).Format("yyyy-MM-dd hh:mm")) {
                    speed = item.windspeed.toFixed(2);
                    return false;
                }
            });
            return speed;
        }
    },
    /*获取天气预报风速*/
    getWfNwpSpeed:function (time) {
        var speed="";
        if(WfNwp.length>0){
            $.each(WfNwp, function (index, item) {
                var WfNwpTime = new Date(parseInt(item.foretime)).Format("yyyy-MM-dd hh:mm")
                if(WfNwpTime==new Date(parseInt(time)).Format("yyyy-MM-dd hh:mm")) {
                    speed = item.windspeed.toFixed(2);
                    return false;
                }
            });
            return speed;
        }
    }
}
//折线图 日期，实况功率，图例，实况风速，预报功率
function lodaTu(date,power,farmName) {
    var myChart = echarts.init(document.getElementById("main"));
    //var colors = ['#6eb2ff', '#FF0000'];
    var option = {
        backgroundColor: '#071f3a',//背景色
        //color: colors,
        grid:{
            x:40,
            y:80,
            x2:20,
            y2:60,
            borderWidth:1
        },
        tooltip : {
            trigger: 'axis',
            axisPointer : {            // 坐标轴指示器，坐标轴触发有效
                type : 'shadow'        // 默认为直线，可选为：'line' | 'shadow'
            }
        },
        legend: {
            show:true,
            //orient:'horizontal',
            //borderWidth:2,
            data:farmName,
            textStyle:{
                fontSize:12,
                fontWeight:'bolder',
                color:'#fff'
            },
            /*[
                {
                    name:'单站',
                    textStyle:{
                        fontSize:12,
                        fontWeight:'bolder',
                        color:'#fff'
                    },
                    //icon:'image://../img/legend/1.png'//格式为'image://+icon文件地址'，其中image::后的//不能省略
                },

            ]*/
        },
        /*grid: {
            left: '5%',
            right: '3%',
            bottom: '20%',
            y: 30,
            containLabel: true
        },*/
        xAxis : [
            {
                type: 'category',
                data:date,
                axisTick: {
                    alignWithLabel: true
                },
                axisLabel: {
                    textStyle: {
                        color: '#fff',
                        fontSize:'10'
                    },
                    interval: 0,
                    rotate: 40,
                }
            }
        ],
        yAxis : [
            {

                type: 'value',
                name: '万度',/*万kwh*/
                axisLine:{
                    lineStyle:{
                        color:'#fff'
                    }
                },
                // min: 0,
                //max: 1000,
                //interval: 500,
                show: true
            }
        ],
        series : functionName(power,farmName)
        /*[
            {
                name:'短期',
                color: ['#50b8df'],
                type:'bar',
                barWidth: '20%',
                data:power
            }
        ]*/
    };
    myChart.setOption(option);
}

function functionName(power,farmName){
    var serie = [];
    for(var i = 0; i < farmName.length; i++){
        if(i == 0){
            var item = {
                name:farmName[i],
                type: 'bar',
                barWidth: '5%',
                data: power[i],
                itemStyle:{
                    normal:{
                        color:'#6eb2ff'
                    }
                }
            }
        }else {
            var item = {
                name:farmName[i],
                type: 'bar',
                barWidth: '5%',
                data: power[i]
            }
        }

        serie.push(item );
    };
    return serie;
}
function btnExport(e){
    var p = {
        "type":type
    };
    window.location.href="../shortPeriodManage/powerExport?type="+type+"";
    /*$.ajax({
        url : "../shortPeriodManage/powerExport",
        type : "get",
        contentType : "application/json",
        dataType : "json",
        data : p/!*JSON.stringify(p)*!/,//转换成字符串。后台使用了RequestBody注解
        success : function(data) {

        }/!*,
        error :function(){
            alert("添加失败");
        }*!/
    });*/


}

function real(){
    window.location.reload();
}
/*
function loadFarmSelect(){
    $.ajax({
        type: 'Get',
        url: '../windManage/selectAll',
        dataType: "Json",
        async: true,
        success: function (data) {
            $.each(data, function (i, n) {
                $("#selectFarm").append(" <option value=\"" + n.farmid + "\">" + n.farmname + "</option>");
            })
            $("#selectFarm").selectpicker('refresh');
            load();
        }
    });
    //$('#selectFarm').selectpicker();
    //$("#selectFarm").val(farmId);

}
*/



